home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xml;
-
- import com.extensibility.util.Debug;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
-
- public class ContentModel extends ContentModelTerm {
- public static final int TYPE_ANY = 2;
- public static final int TYPE_EMPTY = 3;
- public static final int TYPE_MIXED = 4;
- public static final int TYPE_TEXT_ONLY = 5;
- public static final int TYPE_TAGS_ONLY = 6;
- boolean contentModelOpen = true;
-
- public ContentModel(ContentModelOwner var1, int var2) {
- ContentModelTerm var3 = null;
- switch (var2) {
- case 2:
- case 3:
- var3 = new ContentModelTerm(var2);
- break;
- case 4:
- case 5:
- var3 = new ContentModelTerm();
- var3.addTerm(new ContentModelTerm(1));
- break;
- case 6:
- var3 = new ContentModelTerm();
- break;
- default:
- Debug.assert(false, String.valueOf("invalid type = ").concat(String.valueOf(var2)));
- }
-
- super.owner = var1;
- ((ContentModelTerm)this).addTerm(var3);
- }
-
- public ContentModel(ContentModelOwner var1) {
- ContentModelTerm var2 = new ContentModelTerm();
- super.owner = var1;
- ((ContentModelTerm)this).addTerm(var2);
- }
-
- public static boolean isMixed(String var0) {
- if (var0.indexOf(44) != -1) {
- return false;
- } else {
- int var1 = var0.indexOf(40);
- if (var1 >= 0) {
- if (var1 < var0.length() - 1) {
- var1 = var0.indexOf(40, var1 + 1);
- } else {
- var1 = -1;
- }
- }
-
- return var1 == -1;
- }
- }
-
- Object clone(ContentModel var1, boolean var2) {
- ContentModel var3 = (ContentModel)((ContentModelTerm)this).clone(true);
- ContentModel var4 = (ContentModel)((ContentModelTerm)var1).clone(false);
- if (var3.isAny() || var3.isEmpty()) {
- var3.groupContents = new Vector();
- var3.groupContents.addElement(new ContentModelTerm());
- }
-
- if (var3.getRootGroup() != null && !var4.isAny() && !var4.isEmpty()) {
- var3.getRootGroup().groupContents.addElement(var4);
- }
-
- return var3;
- }
-
- Object clone(ContentModelOwner var1, SchemaIntf var2, SchemaIntf var3) {
- ContentModelTerm var4 = null;
-
- try {
- var4 = (ContentModelTerm)super.clone(false);
- var4.owner = var1;
- if (super.groupContents != null) {
- var4.groupContents = new Vector();
- Enumeration var5 = super.groupContents.elements();
-
- while(var5.hasMoreElements()) {
- ContentModelTerm var6 = (ContentModelTerm)var5.nextElement();
- if (var6.owner != null) {
- String var7 = var6.owner.getName();
- ContentModelOwner var8 = var3.getNamedContentModelOwner(String.valueOf('%').concat(String.valueOf(var7)));
- Debug.assert(var8 != null, String.valueOf("Unable to find ipe: ").concat(String.valueOf(var7)));
- var4.addTerm(var8.getContentModel());
- } else {
- var4.addTerm((ContentModelTerm)var6.clone((ContentModelOwner)null));
- }
- }
- } else {
- var4.term = new TypeRef(super.term.getName());
- }
- } catch (Exception var9) {
- Debug.assert(false, "Problem cloning ContentModelTerm.");
- }
-
- return var4;
- }
-
- public void setContentModel(int var1) {
- ((ContentModelTerm)this).removeAll();
- Object var2 = null;
- ContentModelTerm var3;
- switch (var1) {
- case 2:
- case 3:
- var3 = new ContentModelTerm(var1);
- break;
- case 4:
- case 5:
- var3 = new ContentModelTerm();
- var3.addTerm(new ContentModelTerm(1));
- break;
- case 6:
- var3 = new ContentModelTerm();
- break;
- default:
- Debug.assert(false, String.valueOf("invalid type = ").concat(String.valueOf(var1)));
- return;
- }
-
- ((ContentModelTerm)this).addTerm(var3);
- }
-
- public char getChildConnection() {
- Debug.assert(((ContentModelTerm)this).isGroup(), "getChildConnection only valid for groups.");
- return this.getRootGroup() != null ? this.getRootGroup().getChildConnection() : super.getChildConnection();
- }
-
- public void setChildConnection(char var1) {
- if (this.getRootGroup() != null) {
- char var2 = this.getChildConnection();
- this.getRootGroup().setChildConnection(var1);
- ((ContentModelTerm)this).fireChangeEvent(26, new Character(var2));
- } else {
- super.setChildConnection(var1);
- }
- }
-
- public ContentModelTerm getRootGroup() {
- ContentModelTerm var1 = ((ContentModelTerm)this).firstTerm();
- if (var1 != null && var1.isGroup()) {
- if (super.groupContents.size() != 1) {
- return null;
- } else if (var1.owner instanceof InternalPEDeclaration) {
- ContentModel var2 = ((InternalPEDeclaration)var1.owner).getContentModel();
- return var2.getRootGroup();
- } else {
- return var1 instanceof ContentModel ? null : var1;
- }
- } else {
- return null;
- }
- }
-
- public void createRootGroup() {
- Debug.assert(!this.isAny() && !this.isEmpty(), "shouldn't be used for any or empty");
- Debug.assert(this.getRootGroup() == null, "already had a root group");
- ContentModelTerm var1 = new ContentModelTerm();
- var1.groupContents = super.groupContents;
- super.groupContents = new Vector();
- super.groupContents.addElement(var1);
- }
-
- public void setContentModel(boolean var1, boolean var2) {
- if (this.getAllowsText() != var1 || this.getAllowsTags() != var2) {
- ContentModelTerm var3 = this.getRootGroup();
- if (var2) {
- if (var1) {
- if (!this.isTextOnly() && ((ContentModelTerm)this).getLeafTerms().hasMoreElements() && var3 != null) {
- var3.prependTerm(new ContentModelTerm(1));
- } else {
- this.setContentModel(2);
- }
- } else if (var3 == null) {
- this.setContentModel(6);
- } else {
- ContentModelTerm var4 = this.findTerm("#PCDATA", 1);
- if (var4 != null && var4.getParent() == var3) {
- var3.removeTerm(var4);
- }
- }
- } else if (var1) {
- this.setContentModel(5);
- } else {
- this.setContentModel(3);
- }
-
- }
- }
-
- public boolean contains(String var1) {
- return this.findTerm(var1, 1) != null;
- }
-
- public ContentModelTerm findTerm(String var1, int var2) {
- 1.MyVisitor var3 = new 1.MyVisitor((ContentModel)null, var2, var1);
- this.visitTerms(var3, true);
- return var3.getFoundTerm();
- }
-
- public ContentModelTerm findGroup(String var1, int var2) {
- 2.MyVisitor2 var3 = new 2.MyVisitor2(var1, (ContentModel)null, var2);
- this.visitTerms(var3, true);
- return var3.getFoundTerm();
- }
-
- public boolean replace(ContentModelOwner var1, ContentModelTerm var2) {
- 3.FoundVisitor var3 = new 3.FoundVisitor(var1, var2, (ContentModel)null);
- this.visitTerms(var3, false);
- return var3.found;
- }
-
- protected void replace(ContentModelTerm var1, ContentModelTerm var2) {
- this.visitTerms(new 1(var1, var2, (ContentModel)null), false);
- }
-
- public void visitTerms(ContentModelTerm.Visitor var1, boolean var2) {
- Hashtable var3 = new Hashtable();
- ((ContentModelTerm)this).visitChildren(var1, var3, var2);
- }
-
- void updateContentModelToBlank() {
- if (this.getAllowsTags()) {
- if (this.getAllowsText()) {
- this.setContentModel(2);
- } else {
- this.setContentModel(3);
- }
- } else if (this.getAllowsText()) {
- this.setContentModel(5);
- } else {
- this.setContentModel(3);
- }
-
- }
-
- public boolean isOpen() {
- return this.contentModelOpen;
- }
-
- public void setOpen(boolean var1) {
- this.contentModelOpen = var1;
- }
-
- public void setEmpty() {
- this.setContentModel(3);
- }
-
- public void setTextOnly() {
- this.setContentModel(5);
- }
-
- public void setTagsOnly() {
- this.setContentModel(6);
- }
-
- public void setMixed() {
- this.setContentModel(4);
- }
-
- public void setMany() {
- this.setContentModel(6);
- this.getRootGroup().setConnection('|');
- this.getRootGroup().setOccurance('*');
- }
-
- public void setAny() {
- this.setContentModel(2);
- }
-
- public boolean isTextOnly() {
- return this.getType() == 5;
- }
-
- public boolean isTagsOnly() {
- return this.getType() == 6;
- }
-
- public boolean isAny() {
- return this.getType() == 2;
- }
-
- public boolean isEmpty() {
- return this.getType() == 3;
- }
-
- public boolean isMixed() {
- int var1 = this.getType();
- return var1 == 4;
- }
-
- public boolean getAllowsTags() {
- int var1 = this.getType();
- return var1 == 2 || var1 == 4 || var1 == 6;
- }
-
- public boolean getAllowsText() {
- int var1 = this.getType();
- return var1 == 2 || var1 == 4 || var1 == 5;
- }
-
- protected int getType() {
- ContentModelTermEnum var1 = ((ContentModelTerm)this).getLeafTerms();
- if (!var1.hasMoreElements()) {
- return 6;
- } else {
- ContentModelTerm var2 = var1.nextContentModelTerm();
- if (var2.getTerm().equals("#EMPTY")) {
- return 3;
- } else if (var2.getTerm().equals("#ANY")) {
- return 2;
- } else if (!var2.getTerm().equals("#PCDATA")) {
- return 6;
- } else {
- return var1.hasMoreElements() ? 4 : 5;
- }
- }
- }
-
- public String getSource(boolean var1) {
- return var1 || !this.isEmpty() && !this.isAny() && !this.isTextOnly() ? super.getSource(var1) : "";
- }
-
- private void setOwner(ContentModelOwner var1) {
- super.owner = var1;
- }
-
- public boolean isOwned() {
- return true;
- }
-
- public ContentModelOwner getOwner() {
- return super.owner;
- }
-
- void setParent(ContentModelTerm var1) {
- Debug.assert(false, "models don't have parents");
- }
- }
-